package com.design.patterns.list.observer;

/**
 * 唯一 聚合多个观察者
 *
 * @author Wangzhiwen
 */
public interface Subject {

    /**
     * 注册一个观察者
     *
     * @param observer observer
     */
    void registerObserver(Observer observer);

    /**
     * 移除一个观察者
     *
     * @param observer observer
     */
    void removeObserver(Observer observer);

    /**
     * 清空所有观察者
     */
    void cleanObservers();

    /**
     * 通知所有观察者
     */
    void notifyObservers();
}
